<?php
namespace Admin\Controller;
use Think\Controller;
Vendor('Filehuancun.Filehuancun');//Vendor 引入Filehuancun目录下的Filehuancun命名空间
Vendor('ExcleInOut.ExcleInOut');//Vendor 引入ExcleInOut目录下的ExcleInOut命名空间


class LsController extends Controller {
	public function deldir($path){
		// 如果是目录则继续
		if (is_dir ( $path )) {
			// 扫描一个文件夹内的所有文件夹和文件并返回数组
			$p = scandir ( $path );
			foreach ( $p as $val ) {
				// 排除目录中的.和..
				if ($val != "." && $val != "..") {
					// 如果是目录则递归子目录，继续操作
					if (is_dir ( $path . $val )) {
						// 子目录中操作删除文件夹和文件
						$this->deldir ( $path . $val . '/' );
						// 目录清空后删除空文件夹
						@rmdir ( $path . $val . '/' );
					} else {
						// 如果是文件直接删除
						unlink ( $path . $val );
					}
				}
			}
		}
	}
	public function ceshi()//ajax测试方法
	{
		//$name1 ='ThinkPHP11111111111';
		//session('wwf',$name1);
		$sess_auth = session('auth');
		echo $sess_auth['per'];
	}
	public function index() {
	 	//$this->assign('wwfarr1',$temp1);
	 	//echo $this->assign('arr1');
	    $sess_auth = session('auth');
		if($sess_auth)
		{
	    $this->assign('user',$sess_auth['user']);
		$this->display();//echo 输出和assign要在这个这个函数之前设置完成。
		}
	} 
	public function ajaxmddb()
	{
		            $user = M('xxxxkhmd');
	 				
	 				$sjkTemp=$user->select();//后期这里要按照条件筛选
	 				
	 				$arrTemp2 = ""; 
	 				
	 				for($ii = 0; $ii < count ( $sjkTemp ); $ii ++) {
	 					$arrTemp2 =$arrTemp2.
	 	 				$sjkTemp [$ii] [id].",".
	 					$sjkTemp [$ii] [khmc].",".
	 					$sjkTemp [$ii] [mdd].",".
	 					$sjkTemp [$ii] [shr].",".
	 					$sjkTemp [$ii] [shrdh].",".
	 					$sjkTemp [$ii] [shdz].",".
	 					$sjkTemp [$ii] [jd].",".
	 					$sjkTemp [$ii] [wd].",";
	 						 	
	 				} 	 
	 				$arrTemp2=substr ( $arrTemp2, 0, - 1 );
		            echo $arrTemp2;
	 }
	 public function ajaxdpbm()
	 {
	 	$user = M('xxxxdpbm');
	 
	 	$sjkTemp=$user->select();//后期这里要按照条件筛选
	 
	 	$arrTemp2 = ""; //输出可编辑信息
	 
	 	for($ii = 0; $ii < count ( $sjkTemp ); $ii ++) {
	 		$arrTemp2 =$arrTemp2.
	 		$sjkTemp [$ii] [id].",".
	 		$sjkTemp [$ii] [hpbm].",".
	 		$sjkTemp [$ii] [dpmc].",".
	 		$sjkTemp [$ii] [sptm].",".
	 		$sjkTemp [$ii] [dpgg].",".
	 		$sjkTemp [$ii] [djzlkg].",".
	 		$sjkTemp [$ii] [dpbzq].",".
	 		$sjkTemp [$ii] [dpdw].",".
	 		$sjkTemp [$ii] [hwlx].",";
	 
	 	}
	 	$arrTemp2=substr ( $arrTemp2, 0, - 1 );
	 	echo $arrTemp2;
	 }
	 public function ajaxtjsj()
	 {
	 	$khm=$_POST["khm"];
	 	$md=$_POST["md"];
	 	$shr=$_POST["shr"];
	 	$shrdh=$_POST["shrdh"];
	 	$ddh=$_POST["ddh"];
	 	$dz=$_POST["dz"];
	 	$jdz=$_POST["jdz"];
	 	$wdz=$_POST["wdz"];
	 	$beizhu=$_POST["beizhu"];
	 	$db1=$_POST["db1"];
	 	$db2=$_POST["db2"];
	 	$sel=$_POST["sel"];
	 	$temp1 = explode(',',$_POST["arr1"]);
	 	$temp2 = explode(',',$_POST["arr2"]);
	 	$userbf=$_POST["user"];
	 	
	 	
	 	$fp  =  fopen ( "tmp/lock.txt" ,  "r+" );
	 	
	 	if ( flock ( $fp ,  LOCK_EX )) {	   // 进行排它型锁定
	 		$qjbl=fread($fp,filesize("tmp/lock.txt"));//读取数据，并输出数据。
	 		
	 		$user1 = M('xxxxckb');	 	
	 		
	 		$qjbl = $qjbl + 1;
	 		$xlmbarr = "xxxxgongsiddbm" . "-" . $db1 . "-" . sprintf ( "%08d", $qjbl );
	 		$xlbm = $xlmbarr;
	 			 		
	 		//th 计数标记
	 		$tempthjs=0;
	 		//计数超出导致函数死循环，
	 		for ($i=0;$i<count($temp1);$i=$i+3){
	 		    //表头
	 			$data ['khmc'] = $khm;
	 			$data ['khmd'] = $md;
	 			$data ['shr'] = $shr;
	 			$data ['shrdh'] = $shrdh;
	 			$data ['sfddh'] = $ddh;
	 			$data ['mddz'] = $dz;
	 			$data ['mdjd'] = $jdz;
	 			$data ['mdwd'] = $wdz;
	 			$data ['ddbeizhu'] = $beizhu;
	 			$data ['ddriqi'] = $db1;
	 			$data ['pcriq'] = $db2;
	 			$data ['pslx'] = $sel;
	 			//表体
	 			$data ['xuhao'] = $temp2[$tempthjs+1];
	 			$data ['spbm'] = $temp2[$tempthjs+2];
	 			$data ['pinming'] = $temp1[$i];
	 			$data ['sptm'] = $temp2[$tempthjs+3];
	 			$data ['dpgg'] = $temp2[$tempthjs+4];
	 			$data ['xianggui'] = (double)$temp2[$tempthjs+5];
	 			$data ['hwlx'] = $temp2[$tempthjs+6];
	 			$data ['dpbeizhu'] = $temp1[$i+1];
	 			$data ['shjs'] = (double)$temp1[$i+2];
	 			$data ['etddbm'] = $xlmbarr;  
	 			//保存上传者，和上传时间。
	 			$data ['ddscz'] =$userbf;
	 			$today  =  date ( "Y-m-d H:i:s" );
	 			$data ['scrqsj'] = $today;
	 			$data ['querendd'] = '0';//订单只生成未推送
	 			$tempthjs=$tempthjs+9;
	 			$user1->add($data); 
	 		}  
	 	} else {
	 			echo  "Couldn't get the lock!" ;
	 	}
	 		
	 		ftruncate ( $fp ,  0 );       // 截取文件长度为 0 $sess_auth['user']
	 		rewind($fp);//将文件流指针指向文件头。
	 		fwrite ( $fp ,  $qjbl);//写入文件
	 		fflush ( $fp );             // 强制输出到文件
	 		flock ( $fp ,  LOCK_UN );     // 释放锁定
	 		fclose ( $fp );
	 	
	 }
	 public function ajaxdppccxarqdp()
	 {	 	
	 	$today  =  date ( "Y-m-d" );//当天 计算当天（包含当天）的前的全部入库和出库。
	 
	 	$userrk = M('xxxxrkb');
	 	$userck = M('xxxxckb');
	 	$userdp = M('xxxxdpbm');
	 
	 	$mapjzrqs['rkrq'] =array('elt', $today);//入库日期	 	 
	 	$mapjzrqe['ckrq'] =array('elt', $today);//出库日期
	 	
	 
	 		
	 
	 	$sjkTemp1=$userrk->where($mapjzrqs)->select();
	 	$sjkTemp2=$userck->where($mapjzrqe)->select();
	 	$sjkTemp3=$userdp->select();
	 	//去除订单编码的重复项，并排序。
	 
	 	//var_dump($sjkTemp1);
	 	//库存标记数组。单品+批次。
	 	$arrtemp1=array();//入库
	 	$arrtempjs=0;
	 	for($ii = 0; $ii < count ( $sjkTemp1 ); $ii ++) {
	 
	 		$arrtemp1[$arrtempjs]=$sjkTemp1[$ii][dpmc]."+".$sjkTemp1[$ii][rkdppc];
	 		$arrtempjs=$arrtempjs+1;
	 	}
	 	//var_dump($arrtemp1);
	 		
	 	$arrtemp2=array();//出库
	 	$arrtempjs=0;
	 	for($ii = 0; $ii < count ( $sjkTemp2 ); $ii ++) {
	 
	 		$arrtemp2[$arrtempjs]=$sjkTemp2[$ii][pinming]."+".$sjkTemp2[$ii][ckpc];
	 		$arrtempjs=$arrtempjs+1;
	 	}
	 	//var_dump($arrtemp2);
	 
	 	//合并数组
	 	$newarr = array_merge($arrtemp1, $arrtemp2);
	 	//var_dump($newarr);
	 	//去除重复项
	 	$arrddbmaa=  array_unique ( $newarr );
	 	sort ( $arrddbmaa );
	 	//var_dump($arrddbmaa);
	 	//重新按 + 号分隔数组。
	 	$dppcarr=array();
	 	for($ia = 0; $ia < count ( $arrddbmaa ); $ia ++) {
	 		$temp=explode('+',$arrddbmaa[$ia]);
	 		//var_dump($temp);
	 		$dppcarr[$ia]["pinming"]=$temp[0];
	 		$dppcarr[$ia]["pici"]=$temp[1];
	 	}
	 	//var_dump($dppcarr);
	 
	 	//生成最终的入库出库数据 生成库存和虚拟库存。
	 	$zzsj=array();
	 
	 	//赋予单品属性
	 	//只保存单品去除批次
	 	for($aa = 0; $aa < count ( $dppcarr ); $aa ++) {
	 		for($bb = 0; $bb < count ( $sjkTemp3 ); $bb ++) {
	 
	 			if($dppcarr[$aa]["pinming"]==$sjkTemp3[$bb]["dpmc"]){
	 				$zzsj[$aa]["pinming"]= $dppcarr[$aa]["pinming"];
	 				$zzsj[$aa]["pici"]="去除批次";
	 				$zzsj[$aa]["hpbm"]=$sjkTemp3[$bb]["hpbm"];
	 				$zzsj[$aa]["sptm"]=$sjkTemp3[$bb]["sptm"];
	 				$zzsj[$aa]["dpgg"]=$sjkTemp3[$bb]["dpgg"];
	 				$zzsj[$aa]["djzlkg"]=$sjkTemp3[$bb]["djzlkg"];
	 				$zzsj[$aa]["dpbzq"]=$sjkTemp3[$bb]["dpbzq"];
	 				$zzsj[$aa]["hwlx"]=$sjkTemp3[$bb]["hwlx"];
	 			}
	 			 
	 		}
	 	}
	 	//去除二维数组重复项 不保存id
	 	function array_unique_fb($array2D){
	 		foreach ($array2D as $v){
	 			$v=join(',',$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
	 			$temp[]=$v;
	 		}
	 		$temp=array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
	 		foreach ($temp as $k => $v){
	 			$temp[$k]=explode(',',$v); //再将拆开的数组重新组装
	 		}
	 		return $temp;
	 	}
	 	//去除二维数组重复项 保存id
	 	function array_unique_fbbc($array2D){
	 		foreach ($array2D as $k=>$v){
	 			$v=join(',',$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
	 			$temp[$k]=$v;
	 		}
	 		$temp=array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
	 		foreach ($temp as $k => $v){
	 			$array=explode(',',$v); //再将拆开的数组重新组装
	 			//下面的索引根据自己的情况进行修改即可
	 			$temp2[$k]['pinming'] =$array[0];
	 			$temp2[$k]['pici'] =$array[1];
	 			$temp2[$k]['hpbm'] =$array[2];
	 			$temp2[$k]['sptm'] =$array[3];
	 			$temp2[$k]['dpgg'] =$array[4];
	 			$temp2[$k]['djzlkg'] =$array[5];
	 			$temp2[$k]['dpbzq'] =$array[6];
	 			$temp2[$k]['hwlx'] =$array[7];
	 		}
	 		return $temp2;
	 	}
	 	//去除重复项 序列化
	 	$newzzsj=  array_unique_fbbc ( $zzsj );
	 	sort($newzzsj);
	 	//var_dump($newzzsj);
	 
	 
	 	//计算单品+品名的 入库件数。
	 	for($aa = 0; $aa < count ( $newzzsj ); $aa ++) {
	 		$tempjsjs=0;
	 		for($bb = 0; $bb < count ( $sjkTemp1 ); $bb ++) {
	 
	 			//提取单品属性，找到就退出当前循环。
	 			if($newzzsj[$aa]["pinming"]==$sjkTemp1[$bb]["dpmc"]){
	 				$tempjsjs=$tempjsjs+$sjkTemp1[$bb]["rksl"];
	 			}
	 		}
	 		$newzzsj[$aa]["rksl"]=$tempjsjs;
	 	}
	 
	 	//计算单品+品名的 出库件数分为虚拟和真实。
	 	for($aa = 0; $aa < count ( $newzzsj ); $aa ++) {
	 
	 		$tempjsjs1=0;
	 		$tempjsjs2=0;
	 		for($bb = 0; $bb < count ( $sjkTemp2 ); $bb ++) {
	 
	 			//虚拟库存 计算  只要订单不作废 就计算
	 			if($newzzsj[$aa]["pinming"]==$sjkTemp2[$bb]["pinming"]&&$sjkTemp2[$bb]["ddzfbj"]!="已作废"){
	 				$tempjsjs1=$tempjsjs1+$sjkTemp2[$bb]["shjs"];
	 			}
	 
	 
	 			//真实库存 计算  只要订单不作废 已过账  就计算
	 			if($newzzsj[$aa]["pinming"]==$sjkTemp2[$bb]["pinming"]&&$sjkTemp2[$bb]["ddzfbj"]!="已作废"&&$sjkTemp2[$bb]["gzbj"]=="已过账"){
	 				$tempjsjs2=$tempjsjs2+$sjkTemp2[$bb]["shjs"];
	 			}
	 		}
	 
	 		$newzzsj[$aa]["xnkc"]=(string)($newzzsj[$aa]["rksl"]-$tempjsjs1);
	 		$newzzsj[$aa]["zskc"]=(string)($newzzsj[$aa]["rksl"]-$tempjsjs2);
	 
	 		$newzzsj[$aa]["xnsm"]=(string)$tempjsjs1;
	 		$newzzsj[$aa]["gzsm"]=(string)$tempjsjs2;
	 	}
	 	//var_dump($zzsj);
	 
	 	echo  json_encode ( $newzzsj ,JSON_UNESCAPED_UNICODE );
	 
	 }
	
}

